package movie;

import java.util.Vector;

import miscelaneos.JUtilities;

public class JAula {

    private void printDocentes() {
    }

    private void printAlumnos() {
    }
    
    private void PrintAnonimusClass(MyExample objPrint){
        objPrint.PrintHello();
    }

    class JPersona{
        private String _strNombre, _strApellidos, _strDNI;
        private float _flPeso, _flAltura;
        private int _intEdad;

        public String getStrNombre() {
            return _strNombre;
        }

        public void setStrNombre(String strNombre) {
            _strNombre = strNombre;
        }

        public String getStrApellidos() {
            return _strApellidos;
        }

        public void setStrApellidos(String strApellidos) {
            _strApellidos = strApellidos;
        }

        public String getStrDNI() {
            return _strDNI;
        }

        public void setStrDNI(String strDNI) {
            _strDNI = strDNI;
        }

        public float getFlPeso() {
            return _flPeso;
        }

        public void setFlPeso(float flPeso) {
            _flPeso = flPeso;
        }

        public float getFlAltura() {
            return _flAltura;
        }

        public void setFlAltura(float flAltura) {
            _flAltura = flAltura;
        }

        public int getIntEdad() {
            return _intEdad;
        }

        public void setIntEdad(int intEdad) {
            _intEdad = intEdad;
        }
    }
    
    class JDocente extends JPersona{
        private Vector<JCurso> _cursos;
        private String _strCargo;


        public Vector<JAula.JCurso> getCursos() {
            return _cursos;
        }

        public void setCursos(Vector<JAula.JCurso> cursos) {
            _cursos = cursos;
        }

        public String getStrCargo() {
            return _strCargo;
        }

        public void setStrCargo(String strCargo) {
            _strCargo = strCargo;
        }
        
        public void addCurso(JCurso objCurso){
            if (_cursos == null) {
                _cursos = new Vector<JCurso>();
            }
            _cursos.add(objCurso);
        }
    }
    
    class JAlumno extends JPersona{
        private String _strCodigo;
        private Vector<JCurso> _cursos;

        public String getStrCodigo() {
            return _strCodigo;
        }

        public void setStrCodigo(String strCodigo) {
            _strCodigo = strCodigo;
        }

        public Vector<JAula.JCurso> getCursos() {
            return _cursos;
        }

        public void setCursos(Vector<JAula.JCurso> cursos) {
            _cursos = cursos;
        }
        
        public void addCurso(JCurso objCurso){
            if (_cursos == null) {
                _cursos = new Vector<JCurso>();
            }
            _cursos.add(objCurso);
        }
    }
    
    //COmposicion
    private JDocente _DocTeoria, _DocPractica;
    private Vector<JAlumno> _alumnos = new Vector<JAlumno>();

    public JAula() {
        //Curso
        JCurso ProgJava = new JCurso();
        ProgJava.setStrNombre("Programacion Java");
        ProgJava.setIntCreditos(8);
        ProgJava.setStrCodigo("ABC001");
        
        //Docente Teoria
        _DocTeoria = new JDocente();
        _DocTeoria.setStrNombre("Jhonny");
        _DocTeoria.setStrApellidos("RAmirez Chiroque");
        _DocTeoria.addCurso(ProgJava);
        
        //Docente de practica es el mismo de Teoria
        _DocPractica = _DocTeoria;
        
        JAlumno objAlumno;
        
        //Primer Alumno
        objAlumno = new JAlumno();
        objAlumno.setStrNombre("Javier");
        objAlumno.setStrApellidos("Velasco");
        objAlumno.addCurso(ProgJava);
        _alumnos.add(objAlumno);
        
        //Segundo Alumno
         objAlumno = new JAlumno();
         objAlumno.setStrNombre("Jefferson");
         objAlumno.setStrApellidos("Mena");
         objAlumno.addCurso(ProgJava);
        _alumnos.add(objAlumno);
    }

    public static void main(String[] args) {
        JAula jAula = new JAula();
        
        jAula.printDocentes();
        jAula.printAlumnos();
        
        //Enviando un objeto de una clase anonima que implementa
        //la interface myExample
        jAula.PrintAnonimusClass(new MyExample(){
                    public void PrintHello() {
                        JUtilities.showMessageError("Hola bienvenidos a una clase anonima");
                    }
                });
    }

    private class JCurso {
        private String _strCodigo, _strNombre;
        private int _intCreditos;

        public String getStrCodigo() {
            return _strCodigo;
        }

        public void setStrCodigo(String strCodigo) {
            _strCodigo = strCodigo;
        }

        public String getStrNombre() {
            return _strNombre;
        }

        public void setStrNombre(String strNombre) {
            _strNombre = strNombre;
        }

        public int getIntCreditos() {
            return _intCreditos;
        }

        public void setIntCreditos(int intCreditos) {
            _intCreditos = intCreditos;
        }
    }
}
